package cn.iocoder.yudao.module.cms.feedback.service;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.cms.feedback.dal.dataobject.FeedbackDO;
import cn.iocoder.yudao.module.cms.feedback.vo.AdminFeedbackPageReqVO;
import cn.iocoder.yudao.module.cms.feedback.vo.AppFeedbackCreateReqVO;
import cn.iocoder.yudao.module.cms.feedback.vo.FeedbackPageReqVO;
import cn.iocoder.yudao.module.cms.feedback.vo.FeedbackReplyReqVO;
import jakarta.validation.Valid;

/**
 * 意见反馈信息 Service 实现类
 *
 * @author 山野羡民（1032694760@qq.com）
 */
public interface FeedbackService {

    /**
     * 创建意见反馈信息
     *
     * @param userId      用户编号
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createFeedbackInfo(Long userId, @Valid AppFeedbackCreateReqVO createReqVO);

    /**
     * 更新意见反馈信息
     *
     * @param updateReqVO 更新信息
     */
    void replyFeedbackInfo(@Valid FeedbackReplyReqVO updateReqVO);

    /**
     * 删除意见反馈信息
     *
     * @param userId 用户编号
     * @param id     编号
     */
    void deleteFeedbackInfo(Long userId, Long id);

    /**
     * 获得意见反馈信息
     *
     * @param id 编号
     * @return 意见反馈信息
     */
    FeedbackDO getFeedbackInfo(Long id);

    /**
     * 获得意见反馈信息分页
     *
     * @param pageReqVO 分页查询
     * @return 意见反馈信息分页
     */
    PageResult<FeedbackDO> getFeedbackInfoPage(AdminFeedbackPageReqVO pageReqVO);

    /**
     * 获得意见反馈信息分页
     *
     * @param userId 用户编号
     * @param pageReqVO 分页查询
     * @return 意见反馈信息分页
     */
    PageResult<FeedbackDO> getFeedbackInfoPage(Long userId, FeedbackPageReqVO pageReqVO);

}
